/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package dao;

import entidades.Contraste;
import entidades.JoinObject;
import entidades.MarcaMedidor;
import entidades.Medidor;
import entidades.ModeloMedidor;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author RENZO
 */
public class MedidorDAO extends AbstractDAO {
    
    public static Medidor getSelfWith(long id,List<JoinObject>joinObjects){
        Medidor objMedidor = new Medidor();
        Contraste objContraste = new Contraste();
        try {
            PreparedStatement ps = prepararConexionPrepared("SELECT * FROM Contraste WHERE contraste_id = ?");
            ps.setLong(1, id);
            ResultSet rs = realizarConexionGET(ps);
            if(rs.next()){
                objContraste.setId(rs.getLong("contraste_id"));
                
            }
        } catch (SQLException ex) {
            Logger.getLogger(MedidorDAO.class.getName()).log(Level.SEVERE, null, ex);
        }
        return objMedidor;
    }
    
    public static Medidor getMedidorByContraste(long contrasteId){
        Medidor objMedidor = new Medidor();
        Contraste objContraste = new Contraste();
        try {
            PreparedStatement ps = prepararConexionPrepared("SELECT m.medidor_id as id FROM Medidor m INNER JOIN Contraste c ON m.medidor_id = c.medidor_id WHERE c.contraste_id = ?");
            ps.setLong(1, contrasteId);
            ResultSet rs = realizarConexionGET(ps);
            if(rs.next()){
                objMedidor.setId(rs.getLong("id"));
                objContraste.setId(contrasteId);
                objMedidor.setContraste(objContraste);
            }
        } catch (SQLException ex) {
            Logger.getLogger(MedidorDAO.class.getName()).log(Level.SEVERE, null, ex);
        }
        return objMedidor;
    }
    
    public static List<Medidor> getMedidorBySuministro(String suministro){
        List<Medidor>listaMedidores = new ArrayList<Medidor>();
        Medidor objMedidor = new Medidor();
        try {
            PreparedStatement ps = prepararConexionPrepared("SELECT m.medidor_id as id,m.medidor_suministro as suministro,mod.modelo_cod as modelo,mar.marca_codigo as marca FROM Medidor m "
                    + "INNER JOIN MODELOMEDIDOR mod ON mod.modelo_id = m.modelo_id INNER JOIN MARCAMEDIDOR mar ON mod.marca_id = mar.marca_id "
                    + " WHERE m.medidor_suministro ILIKE '%"+suministro+"%' ");
            ResultSet rs = realizarConexionGET(ps);
            while(rs.next()){
                objMedidor = new Medidor();
                objMedidor.setId(rs.getLong("id"));
                objMedidor.setSuministro(rs.getString("suministro"));
                MarcaMedidor marca = new MarcaMedidor();
                ModeloMedidor modelo = new ModeloMedidor();
                modelo.setDescripcion(rs.getString("modelo"));
                marca.setDescripcion(rs.getString("marca"));
                modelo.setMarca(marca);
                objMedidor.setModelo(modelo);
                listaMedidores.add(objMedidor);
            }
        } catch (SQLException ex) {
            Logger.getLogger(MedidorDAO.class.getName()).log(Level.SEVERE, null, ex);
        }
        return listaMedidores;
    }
}
